File manager - Edit - /home/autoph/public_html/projects/ahg-prf-api/app/Helpers/CommonHelper.php
Back
<?php namespace App\Helpers; use App\Helpers\CommonHelper; use App\Models\StatusProcess; use App\Models\SlaLog; use App\Models\User; use Illuminate\Pagination\Paginator; use Illuminate\Support\Collection; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Facades\DB; use Illuminate\Database\QueryException; use Illuminate\Support\Facades\Auth; use App\Notifications\EmailNotification; use App\Notifications\NotifiableUser; use Illuminate\Support\Facades\Notification; class CommonHelper { /**** * Parameters = [] * - transaction_id (Required) * - user_id (Required) * - status_id (Required) * - prev_status_id (Required) */ public static function logSLA($request) { $errors = []; if(!isset($request['transaction_id']) || $request['transaction_id'] == '') { $errors[] = "Transaction ID is required."; } if(!isset($request['user_id']) || $request['user_id'] == '') { $errors[] = "User ID is required."; } if(!isset($request['status_id']) || $request['status_id'] == '') { $errors[] = "Status ID is required."; } if(!isset($request['prev_status_id']) || $request['prev_status_id'] == '') { $errors[] = "Previous Status ID is required."; } if($errors) { return [ 'status' => false, 'message' => 'Unable to process SLA logs', 'errors'=> $errors ]; } DB::connection()->beginTransaction(); try { $user = User::where('id', $request['user_id'])->first(); $employee = \App\Models\Employee::where('employee_id','=', $user->employee_id)->first(); $now = date('Y-m-d H:i:s'); $nextStatus = $request['status_id']; $log_data = [ 'prf_id' => $request['prf_id'], 'transaction_id' => $request['transaction_id'], 'transaction' => $request['transaction'] ?? null, 'status_id' => $nextStatus, 'start' => $now, 'created_at' => $now, 'user_id' => $user->id, 'company_id' => $employee['company_id'] ?? null, 'dealership_id' => $employee['dealer_id'] ?? null, 'department_id' => $employee['dept_id'] ?? null, 'end' => $now, ]; DB::enableQueryLog(); $data = SlaLog ::where(['transaction_id' => $request['transaction_id'], 'status_id' => $request['prev_status_id']])->first(); if($data && $data->exists) { $data->fill([ 'user_id' => $user->id, 'company_id' => $employee['company_id'] ?? null, 'dealership_id' => $employee['dealer_id '] ?? null, 'department_id' => $employee['dept_id'] ?? null, 'end' => $now, ]); $data->save(); $data->touch(); } $log = SlaLog::insert($log_data); DB::connection()->commit(); return [ 'status' => true, 'message' => 'Success', 'data'=> $log_data, ]; } catch (Throwable $e) { DB::connection()->rollback(); return [ 'status' => false, 'message' => $e->getMessage() ]; } } public static function getNextStatus(int $status_id) { $status = StatusProcess::where('status_id', '=', $status_id)->first(); $order = ($status->order ?? 0) + 1; $nextStatus = StatusProcess::where('order', '=', $order)->first(); return $nextStatus->status_id; } public static function generateSeries($type="",$prefix=null) { $data = \App\Models\Series::where('trans_type', '=', $type)->where('created_at', '>=', date('Y-m-01 00:00:00'))->where('created_at', '<=', date('Y-m-d 23:59:59')); $count = $data->count(); $count = $count + 1; $date = date('ym'); $num = str_pad((int)$count, 5, "0", STR_PAD_LEFT); $series = ($prefix ? $prefix."-" : null) . $date . $num; return $series; } public static function sendEmailNotification($data, $nextApprovers, $messageID ,$status_id) { set_time_limit(0); // dd($data->description);exit; $token = config('auth.static_email_auth_token'); $emailFooter = 'Thank you. This is a system-generated email notification.'; $emailAction = 'View Request'; $frontEndURL = rtrim(env('APP_URL_PRD', 'http://localhost:5173'), '/'); // $frontEndURL = rtrim(env('APP_URL', 'http://localhost:5173'), '/'); $createdBy = Auth::id(); $statusesToMessage = [ 2 => 1, 25 => 53, 23 => 54, 5 => 55, 28 => 56, 38 => 56, //FOr canvass creation 32 => 57, //Proc Sup. 19 => 58, //user canvass rating 35 => 57, //Proc Mngr. canvass approval 36 => 59, //Mancom Approval 7 => 60,// PO Creation 40 => 61, //PO Validation 12 => 62, //PO Approval // 8 => , //Waiting for Delivery ]; $messageID = $statusesToMessage[$status_id] ?? null; $system_id = 2; //PO content message $referenceCode = ''; if(in_array($status_id,[40,12])){ $referenceCode =$data->reference_code; $PoDetails = "P.O. Reference No: {$referenceCode}\nItem list:\n"; foreach ($data->po_dtl as $item) { // You may need to load asset item name, assuming relationship is defined $itemName = $item->asset_item->name ?? 'Unknown Item'; $uom = $item->uom ?? 'unit'; // Adjust as needed $PoDetails .= "- {$item->quantity} {$uom} {$itemName}\n"; } }else{ //Purchase Request content messag $referenceCode = $data->reference_no; $prfDetails = "PRF Reference No: {$referenceCode}\nItem list:\n"; //Details if(in_array($status_id,[32,19,35,36,7,38])){ $prfDetails .= "- {$data->quantity} {$data->uom} {$data->description}\n"; } else{ //Header $items = $data->assetItems->map(function ($item) { return [ 'asset_item_id' => $item->asset_item_id, 'asset_item_name' => $item->asset_item_name, 'purchase_request_dtls_id' => $item->pivot->id, 'uom' => $item->pivot->uom, 'quantity' => $item->pivot->quantity, ]; }); foreach ($items as $item) { $prfDetails .= "- {$item['quantity']} {$item['uom']} {$item['asset_item_name']}\n"; } } } $isRequiredApprover = false; foreach ($nextApprovers as $nextApprover) { $notification = \App\Models\NotificationModel::create([ "type" => "email", "email" => $nextApprover->email, "recipient" => $nextApprover->name, "subject" => '', "provider_type" => "email", "message" => '', "created_by" => $createdBy ]); $noid = $notification->id; $Elink = "{$frontEndURL}/loginEmailLink?token={$token}&user_id={$nextApprover->id}&nid={$noid}&employee_id={$nextApprover->employee_id}&system_id={$system_id}&referenceCode={$referenceCode}&redirect=/purchase-request/ongoing"; if(in_array($status_id,[28,32,19,35,38])){ $Elink = "{$frontEndURL}/loginEmailLink?token={$token}&user_id={$nextApprover->id}&nid={$noid}&employee_id={$nextApprover->employee_id}&system_id={$system_id}&referenceCode={$referenceCode}&redirect=/purchase-request/for-canvas"; } if(in_array($status_id,[36])){ $isRequiredApprover = $nextApprover->is_required ? $nextApprover->is_required : false; $Elink = "{$frontEndURL}/loginEmailLink?token={$token}&user_id={$nextApprover->id}&nid={$noid}&employee_id={$nextApprover->employee_id}&system_id={$system_id}&referenceCode={$referenceCode}&redirect=/purchase-request/mancom-approval"; } if(in_array($status_id,[7])){ $Elink = "{$frontEndURL}/loginEmailLink?token={$token}&user_id={$nextApprover->id}&nid={$noid}&employee_id={$nextApprover->employee_id}&system_id={$system_id}&referenceCode={$referenceCode}&redirect=/purchase-orders/for-po"; } if(in_array($status_id,[40])){ $Elink = "{$frontEndURL}/loginEmailLink?token={$token}&user_id={$nextApprover->id}&nid={$noid}&employee_id={$nextApprover->employee_id}&system_id={$system_id}&referenceCode={$referenceCode}&redirect=/purchase-orders/validation"; } if(in_array($status_id,[12])){ $Elink = "{$frontEndURL}/loginEmailLink?token={$token}&user_id={$nextApprover->id}&nid={$noid}&employee_id={$nextApprover->employee_id}&system_id={$system_id}&referenceCode={$referenceCode}&redirect=/purchase-orders/approval"; } // assuming EmailmessageContent is another CommonHelper function or in controller you can refactor if(in_array($status_id,[40,12])){ $msgC=self::EmailmessageContent($messageID, $nextApprover->name, $Elink, $PoDetails); }else{ $msgC=self::EmailmessageContent($messageID, $nextApprover->name, $Elink, $prfDetails); } $messageContent = implode("\n", [ $msgC['subject'], $msgC['greeting'], $msgC['body'], $msgC['footer'], $msgC['actionLabel'], $Elink ]); $notification->subject = $msgC['subject']; $notification->message = $messageContent; $notification->save(); if($nextApprover->email){ $user = new NotifiableUser($nextApprover->email); $send = Notification::send($user, new EmailNotification($msgC)); $response_array = [ 'notification_id' => $notification->id, 'response_status' => ($send === null ? 'success' : 'failed'), 'response_body' => $send, 'created_at' => now() ]; \App\Models\NotificationResponse::create($response_array); } } return true; } public static function EmailmessageContent($message_id,$name,$Elink,$prfDetails) { $msg = \App\Models\MessageContent::find($message_id); // if($msg) $msg = $msg->toArray()[0]; // dd(['body' => $msg['body'] ,'prf'=>$prfDetails]); if($msg) $msg = $msg->toArray(); if(strlen($name)>0) { $formattedBody = $msg['body'] . "\n\n" . $prfDetails; $Elink = preg_replace('/^(http[s]?:)?(\/\/)?(http[s]?:)?(\/\/)?/i', 'http://', $Elink); $link = $Elink ?? $msg['link']; $msgContent = [ 'subject' => $msg['subject'], 'greeting' => $msg['greeting'] . ' ' . $name . '!', 'body' => $formattedBody, 'footer' => $msg['footer'], 'actionLabel' => $msg['action_label'], // 'link' => $Elink ?? $msg['link'], 'link' => $link, ]; }unset($msg); if(strlen($name)>0) { return $msgContent; } else{ return response()->json(['error' => 'No user found in database.'],500); } } }
| ver. 1.4 |
.
| PHP 8.1.32 | Generation time: 0.09 |
proxy
|
phpinfo
|
Settings